package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import dao.utils.GenericHibernateDAO;
import domain.Clientes;
import domain.Empleados;
import domain.Reservas;

public class ReservasDAOImpl extends GenericHibernateDAO implements ReservasDAO {

	/**
	 * Constructor de sesion
	 */
	public ReservasDAOImpl(Session s) {
		super(s);
	}
	/**
	 * Para buscar todos de reservas
	 */
	@Override
	public List<Reservas> findAll() {
		Query q=getSession().createQuery("From Reservas");
		return q.list();
	}
	/**
	 * Selecciona los clientes por el que lo pases
	 * @param dni, se lo pasas para buscarlos en la tabla clientes
	 */
	public Clientes findByDni(String dni){
		Clientes cliente = (Clientes) getSession().createQuery("from Clientes as e where e.dni = ?").setString(0, dni).uniqueResult();
		return(cliente);
	}
	
	/**
	 * 
	 * Para insertar, busca primero para ver que no haya ya una igual
	 * @param frecha, se le pasa la fecha para comprobar
	 * @param se le pasa el objeto res que a sido declarado en la clase de la interfaz
	 * @param se le pasa el string que hara de fecha para comprobar que no haya alguno igual
	 */
	public boolean insertarReserva(String fecha, Reservas res, int idArticulo, String Horainicio,String HoraFinal){
		//Reservas reserva = (Reservas) getSession().createQuery("from Reservas as e where e.fecha ="+fecha+" and e.horaInicio =>"+Horainicio+" and e.horaInicio =<"+HoraFinal+" and e.articulos ="+idArticulo+"").uniqueResult();
		//if(reserva !=  null){
			//return false;
		//}else{
			getSession().save(res);
			//return true;
		//}
			return false;
	}

	
	public void borrarReserva(String id) {
	
			
			Reservas reserva = (Reservas) getSession().createQuery("from Reservas as e where e.idReservas = ?").setString(0, id).uniqueResult();
			System.out.println(reserva);
			Integer idReserva=reserva.getIdReservas();
			reserva= (Reservas) getSession().load(Reservas.class, (Integer) idReserva);				
				
				//Se realiza el borrado
				getSession().delete(reserva);	
		
	}

}